import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Monkey here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Monkey extends Actor
{
    /**
     * Act - do whatever the Monkey wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    private int velocidad=10;
    private int velocidadSalto;
    private int aceleracion;
    private boolean salto;
    private int jump;
    private boolean estaEnRama;
    private int tiempo;
    
    GifImage imagen = new GifImage("Monkey.gif");
    GifImage imagen2 = new GifImage("MonkeyPD.gif");
    GreenfootImage imagenSaltando = new GreenfootImage("salta.png");
   
    
    public Monkey()
    {
      setImage(imagen2.getCurrentImage());
       tiempo=0;
       velocidadSalto=0;
       aceleracion=2;
       jump=12; 
       salto=false;
       estaEnRama=false;
    }
     /***
      * este metodo hace que el objeto se mueva
      * 
      */
    public void act() 
    {
        // Add your action code here.
        moverMonkey();
        checkFall();
   }
   
    /** 
      * este metodo se utiliza para que el objeto se mueva el actor con las indicaciones que le de 
      * el jugador
      */
    public void moverMonkey()
    {
        if(Greenfoot.isKeyDown("right")){
          moveDerecha(); 
        }
        
        if(Greenfoot.isKeyDown("left")){
           moveIzquierda(); 
        }
        
        if(Greenfoot.isKeyDown("up")){
           saltar();
           setImage(imagenSaltando);
        }
        //-------------------------------------------------------------
        /*if(Greenfoot.isKeyDown("space") && isTouching(Liana.class) ||isTouching(Liana2.class) || isTouching(Liana3.class)){
            if(getY()<=100){
              jump=0;  
            }
        }*/
        
         if(getY()>=390){
             setLocation(getWorld().getWidth()/2-getWorld().getWidth()/4,getWorld().getHeight()/2+getWorld().getHeight()/4);
             getWorld().addObject(new Piso(),getWorld().getWidth()/2-getWorld().getWidth()/4,getWorld().getHeight()-20);//piso abajo del gorila
             ((MonkeyWorld)getWorld()).getVidas().add(-1);
        }
      }
      
      
      public void saltar()
      {
         velocidadSalto = -jump;
         fall();
      }
      
      public boolean onGround()
      {
         if(!isTouching(Piso.class)){
             return false;
            }else{
                return true;
            }
      }
      public void checkFall()
      {
          if(onGround()){
              velocidadSalto=0;
            }else{
                fall();
            }
      }
      
      public void fall()
      {
          setLocation(getX(),getY()+velocidadSalto);
          velocidadSalto = velocidadSalto + aceleracion;
        }
      
      public void moveDerecha()
      {
         if(getX()<=getWorld().getWidth()/2){
            setLocation(getX()+1,getY());
            } 
                
          if(tiempo==2){
             setImage(imagen2.getCurrentImage());
            ((MonkeyWorld)getWorld()).changeScroll(-velocidad);
             tiempo=0;
           }
            tiempo++; 
      }
      
      public void moveIzquierda()
      {
          
          if(getX()>=40){
             setLocation(getX()-1,getY());
          }  
                
          if(tiempo==2){
             setImage(imagen.getCurrentImage());
             ((MonkeyWorld)getWorld()).changeScroll(+velocidad);
             tiempo=0;
               }
          tiempo++;
      }
    }